<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 数值扩展
        // 精度缺失
        let fn = (x, y) => Math.abs(x - y) < Number.EPSILON;
        fn(0.1 + 0.2, 0.3)
        console.log(0.1 + 0.2 == 0.3);
        console.log((0.1 * 10 + 0.2 * 10) / 10);
        // 二进制以0b开头
        console.log(0b11);
        // 八进制以0o开头
        console.log(0o11);
        // Number.isFinite检测⼀个数值是否为有限数。
        console.log(Number.isFinite(5));
        // Number.isInteger()判断⼀个数是否为整数。
        console.log(Number.isInteger(2));
        // Math.trunc() 将数字的⼩数部分抹掉。 
        console.log(Math.trunc(2.36666));
        // Math.sign判断⼀个数到底为正数 负数 还是零
        console.log(Math.sign(-0.2));
        //  对象方法扩展
        //  Object.is() ⽅法判断两个值是否为同⼀个值
        console.log(Object.is(10, 10));
        // Object.assign 对象的合并
        // 浅拷贝
        var obj = {
            name: '张三',
            age: 18
        }
        // var a = Object.assign(obj)
        // console.log(Object.assign(obj));
        var a = {
            ...obj
        }
        a.age = 30
        console.log(obj == a);//true因为修改后的
        var a = {}
        Object.assign(a,obj)
        console.log(obj);
        console.log(a);
        // Object.setPrototypeOf ⽤于设置对象的原型对象
        var obj = {
            name:'王五'
        }
        var b = {
            age:20
        }
        Object.setPrototypeOf(obj,b)
        console.log(obj);
        // 指数运算符
        console.log(Math.pow(5,3));//15
    </script>
</body>

</html>